package design.prototype;
/**
 * @author GY
 * @date 2019年1月31日
 * @说明: 钥匙原型库
 */
public class PrototypeLibrary {
    public static enum KeyModelType {
        /** 房间钥匙*/
        ROOM_KEY_MODEL("room", new Key("房间钥匙")),
        /** 大门钥匙*/
        GATE_KEY_MODEL("gate", new Key("大门钥匙"));
        private KeyModelType(String keyName, Key key) {
            this.keyName = keyName;
            this.key = key;
        }
        private String keyName;
        private Key key;
        public String getKeyName() {
            return keyName;
        }
        public Key getKey() {
            return key;
        }
    }
    /**
     * @author GY
     * @date 2019年1月31日
     * @说明: 拿钥匙模型配一把新钥匙给master
     */
    public static Key getNewKeyByKeyModelToMaster(KeyModelType keyType, Master master) {
        try {
            Key newKey = (Key) keyType.getKey().clone();
            // 可能之前钥匙是小明的，这一把新钥匙交给小红
            newKey.setMaster(master);
            return newKey;
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
}